package com.starhub.application.message.service;

import java.util.List;
import java.util.Map;

import com.starhub.application.message.dto.Message;
import com.starhub.application.message.result.AIChatMessageResult;
import com.starhub.application.message.result.AIChatSessionResult;

public interface IMessageStoreService {
    /**
     * 保存消息
     * @param message 消息对象
     */
    Long saveMessage(Message message);

    /***
     * 保存写作记录
     *
     * @param: message
     * @param: additionalParams
     * @return: java.lang.Long  chatSessionId
     */
    Long saveWriteRecord(Message message, Map<String, Object> additionalParams);

    /**
     * 获取会话的历史消息
     * @param sessionId 会话ID
     * @param limit 获取的消息数量限制
     * @return 消息列表
     */
    List<Message> getHistoryMessages(String sessionId, int limit);
    
    /**
     * 保存消息到ES（预留接口）
     * @param message 消息对象
     */
    void saveMessageToES(Message message);
    
    /*
     * 获取用户的会话列表（分页）
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 会话列表
     */
    AIChatSessionResult getUserSessions(Long userId, Long agentId, int pageNum, int pageSize);
    
    /**
     * 获取指定会话的消息列表（分页）
     * @param userId 用户ID
     * @param chatId 会话ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 消息列表
     */
    AIChatMessageResult getSessionMessages(Long userId, Long chatId, int pageNum, int pageSize);
} 